home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 363 / tprolog1 / sysfile.toy < prev    next >
Text File  |  1990-02-03  |  37KB  |  1,432 lines

  1.  
  2.  
  3. % KERNEL file for TOY Prolog
  4. %            
  5. % (c) Kluzniak/Szpakowicz 1985
  6. %
  7. % TOY Prolog ST Version (c) Jens Kilian 1986
  8.  
  9. % standard atoms :
  10.  
  11. ';'/2    ','/2    'call'/1    'tag'/1
  12. '[]'/0   '.'/2    'error'/1   'user'/0
  13. 'xfx'/0  'xfy'/0  'yfx'/0     'yfy'/0  % operator types
  14. 'fx'/0   'fy'/0   'xf'/0      'yf'/0   %    "       "
  15. 'ear'/0
  16.  
  17. % atoms identifying system routines (keep 'fail' first and 'true' last)
  18.  
  19.    'fail'/0       'tag'/1        'call'/1       '!'/0
  20.    'tagcut'/1     'tagfail'/1    'tagexit'/1    'ancestor'/1
  21.    'halt'/1       'status'/0
  22.    'display'/1    'rch'/0        'lastch'/1     'skipbl'/0     'wch'/1
  23.    'echo'/0       'noecho'/0
  24.    'see'/1        'seeing'/1     'seen'/0       'tell'/1       'telling'/1
  25.    'told'/0
  26.    'ordchr'/2     'sum'/3        'prod'/4       'less'/2       '@<'/2
  27.    'smalletter'/1 'bigletter'/1  'letter'/1     'digit'/1      'alphanum'/1
  28.    'bracket'/1    'solochar'/1   'symch'/1
  29.    'eqvar'/2      'var'/1
  30.    'atom'/1       'integer'/1    'nonvarint'/1
  31.    'functor'/3    'arg'/3        'pname'/2      'pnamei'/2
  32.    '$proc'/1      '$proclimit'/0 '$procinit'/0
  33.    'clause'/5     'retract'/3    'abolish'/2    'assert'/3     'redefine'/0
  34.    'predefined'/2 'protect'/2    'unprotect'/2
  35.    'spy'/2        'nospy'/2      'spied'/2
  36.    'nonexistent'/0 'nononexistent'/0
  37.    'debug'/0      'nodebug'/0
  38.    'op'/3         'FF'/3         'delop'/1
  39.    'grf_clip'/5   'grf_pline'/1  'grf_pmarker'/1 'grf_text'/3  'grf_poly'/1
  40.    'grf_fill'/3   'grf_box'/4    'grf_bar'/4    'grf_arc'/5    'grf_pie'/5
  41.    'grf_circle'/3 'grf_ellipse'/4 'grf_rbox'/4  'grf_rfbox'/4  'grf_wrmode'/1
  42.    'grf_colour'/4
  43.    'grf_l_colour'/1  'grf_l_type'/1 'grf_l_udstyle'/1 'grf_l_width'/1
  44.    'grf_l_ends'/2
  45.    'grf_m_colour'/1  'grf_m_type'/1 'grf_m_height'/1
  46.    'grf_t_height'/1  'grf_t_point'/1   'grf_t_rotation'/1   'grf_t_colour'/1
  47.    'grf_t_effects'/1 'grf_t_align'/2
  48.    'grf_f_colour'/1  'grf_f_type'/1 'grf_f_style'/1   'grf_f_perim'/1
  49.    'grf_f_udpat'/1
  50.    'grf_mse_form'/5  'grf_mse_form'/1 'grf_mse_show'/1 'grf_mse_hide'/0
  51.    'grf_mse_state'/3
  52.    'grf_mode'/0      'txt_mode'/0   'alert'/3
  53.    'date'/3       'set_date'/3   'time'/3       'set_time'/3
  54.    'interrupt'/0  'disk_dir'/1   'disk_search'/4 'disk_search'/2
  55.    'set_fstring'/2
  56.    'true'/0
  57.  
  58. % kernel library : error handler
  59.  
  60. error(:0) : functor(:0, :1, :2) . predefined(:1, :2) . ! .
  61.             nl . display(' +++ System call error : ') . display(:0) .
  62.             nl . bell . fail . []
  63. error(:0) : nl . display(' +++ ERROR : ') . display(:0) . nl . bell . fail . []
  64.  
  65. % special character output routines
  66.  
  67. :ordchr(13, :0) . assert(iseoln(:0), [], 0) . assert(nl, wch(:0).[], 0) . [] #
  68.  
  69. :ordchr(27, :0) . assert(escape, wch(:0).[], 0) .
  70.                   assert(cls, escape.wch('E').[], 0) . [] #
  71.  
  72. :ordchr(7, :0) . assert(bell, wch(:0).[], 0) . [] #
  73.  
  74. % predefined predicates
  75.  
  76. '='(:0, :0) : []
  77.  
  78. ','(:0, :1) : call(:0) . call(:1) . []
  79.  
  80. ';'(:0, _) : call(:0) . []
  81. ';'(_, :0) : call(:0) . []
  82.  
  83. not(:0) : call(:0) . ! . fail . []
  84. not(_) : []
  85.  
  86. check(:0) : not(not(:0)) . []
  87.  
  88. 'side_effects'(:0) : not(not(:0)) . []
  89.  
  90. once(:0) : call(:0) . ! . []
  91.  
  92. '@=<'(:0, :1) : '@<'(:1, :0) . ! . fail . []
  93. '@=<'(_, _) : []
  94.  
  95. '@>'(:0, :1) : '@<'(:1, :0) . []
  96.  
  97. '@>='(:0, :1) : '@=<'(:1, :0) . []
  98.  
  99. % - - - - - - - - - basic input procedures - - - - - - - - - -
  100.  
  101. rdchsk(:0) : rch . skipbl . lastch(:0) . []
  102.  
  103. rdch(:0) : rch . lastch(:1) . sch(:1, :0) . []
  104.  
  105. % convert nonprintable characters to blanks
  106. sch(:0, :0) : '@<'(' ', :0) . ! . []
  107. sch(:0, ' ') : []
  108.  
  109. repeat : []
  110. repeat : repeat . []
  111.  
  112. member(:0, :0.:1) : []
  113. member(:0, _.:1) : member(:0, :1) . []
  114.  
  115. proc(:0) : '$procinit' . '$pr'(:0) . []
  116. '$pr'(:0) : '$proclimit' . ! . fail . []
  117. '$pr'(:0) : '$proc'(:0) . []
  118. '$pr'(:0) : '$pr'(:0) . []
  119.  
  120. %   b a g o f   (preserves order of solutions)
  121.  
  122. bagof(:0, :1, _) : asserta('BAG'('BAG')) . call(:1) .
  123.          asserta('BAG'(:0)) . fail . []
  124. bagof(_, _, :0) : 'BAG'(:1) . ! . intobag(:1, [], :0) . []
  125.  
  126. intobag('BAG', :0, :0) : ! . retract('BAG', 1, 1) . []
  127. intobag(:0, :1, :2) : retract('BAG', 1, 1) . 'BAG'(:3) . ! .
  128.          intobag(:3, :0.:1, :2) . []
  129.  
  130. % display copyright message :
  131.  
  132. :  grf_mse_hide . grf_f_type(0) . grf_rfbox(152, 136, 487, 263) .
  133.    grf_t_align(0, 5) .
  134.    grf_text(272, 152, 'TOY Prolog ST') .
  135.    grf_text(160, 184, 'TOY Prolog (c) 1983  Kluzniak/Szpakowicz') .
  136.    grf_text(272, 200, 'IIUW Warszawa') .
  137.    grf_text(168, 232, 'ATARI ST version (c) 1986  Jens Kilian') .
  138.    grf_mse_show(0) . grf_mse_form(255) . [] #
  139.  
  140. % preset user-defined function key strings
  141.  
  142. :  set_fstring(0, ':-') . [] #
  143. :  set_fstring(1, '-->') . [] #
  144. :  set_fstring(2, '=:=') . [] #
  145. :  set_fstring(3, '=\\=') . [] #
  146. :  set_fstring(4, '==') . [] #
  147. :  set_fstring(5, '\\==') . [] #
  148. :  set_fstring(6, '=..') . [] #
  149. :  set_fstring(7, 'not') . [] #
  150. :  set_fstring(8, 'is') . [] #
  151. :  set_fstring(9, 'mod') . [] #
  152. :  set_fstring(10, '=<') . [] #
  153. :  set_fstring(11, '>=') . [] #
  154. :  set_fstring(12, '@<') . [] #
  155. :  set_fstring(13, '@>') . [] #
  156. :  set_fstring(14, '@=<') . [] #
  157. :  set_fstring(15, '@>=') . [] #
  158. :  set_fstring(16, ':-sysload(''editor.toy'').\M') . [] #
  159. :  set_fstring(17, ':-sysload(''calltree.toy'').\M') . [] #
  160. :  set_fstring(20, ':-cls.\M') . [] #
  161. :  set_fstring(25, ':-assert(') . [] #
  162. :  set_fstring(26, ':-retract(') . [] #
  163. :  set_fstring(27, ':-status.\M') . [] #
  164.  
  165. %%%%%%%%%%%%%%%% THE FOLLOWING CODE COMPRISES THE MONITOR %%%%%%%%%%%%%%%%%%
  166.  
  167. % Comments had to be sacrificed for disk space - sorry !!!
  168.  
  169. 'ear' :
  170.    'nl' .
  171.    'display'('TOY Prolog listening:') .
  172.    'nl' .
  173.    'tag'('loop') . []
  174. 'ear' :
  175.    'grf_mode' .
  176.    'halt'('TOY Prolog --- end of session.') . []
  177. 'loop' :
  178.    'repeat' .
  179.    'display'('?-') .
  180.    'read'(:0, :1) .
  181.    'exec'(:0, :1) .
  182.    'fail' . []
  183. 'stop' :
  184.    'tagfail'('loop') . []
  185. 'sysload'(:0) :
  186.    'see'(:0) .
  187.    'tagexit'('loop') . []
  188. 'exec'('e r r', _) :
  189.    '!' . []
  190. 'exec'(':-'(:0), _) :
  191.    '!' .
  192.    'once'(:0) . []
  193. 'exec'(:0, _) :
  194.    'integer'(:0) .
  195.    '!' .
  196.    'num_clause' . []
  197. 'exec'(':-'(:0, :1), _) :
  198.    '!' .
  199.    'assimilate'(':-'(:0, :1)) .
  200.    'display'('ok') .
  201.    'nl' . []
  202. 'exec'('-->'(:0, :1), _) :
  203.    '!' .
  204.    'assimilate'('-->'(:0, :1)) .
  205.    'display'('ok') .
  206.    'nl' . []
  207. 'exec'(:0.:1, _) :
  208.    '!' .
  209.    'consultall'(:0.:1) . []
  210. 'exec'(:0, :1) :
  211.    'call'(:0) .
  212.    'numbervars'(:0, 0, _) .
  213.    'printvars'(:1) .
  214.    'enough'(:1) .
  215.    '!' . []
  216. 'exec'(_, _) :
  217.    'display'('no') .
  218.    'nl' . []
  219. 'enough'(:0) :
  220.    'var'(:0) .
  221.    '!' . []
  222. 'enough'(_) :
  223.    'rch' .
  224.    'skipbl' .
  225.    'lastch'(:0) .
  226.    'rch' .
  227.    'not'('='(:0, ';')) . []
  228. 'printvars'(:0) :
  229.    'var'(:0) .
  230.    'display'('yes') .
  231.    'nl' .
  232.    '!' . []
  233. 'printvars'(:0) :
  234.    'prvars'(:0) . []
  235. 'prvars'(:0) :
  236.    'var'(:0) .
  237.    '!' . []
  238. 'prvars'('var'(:0, :1).:2) :
  239.    'nl' .
  240.    'writetext'(:0) .
  241.    'display'(' = ') .
  242.    'side_effects'('outt'(:1, 'fd'(_, _), 'q')) .
  243.    'wch'(' ') .
  244.    'prvars'(:2) . []
  245. 'num_clause' :
  246.    'display'('A number can''t be a clause.') .
  247.    'nl' . []
  248. 'consultall'([]) :
  249.    '!' . []
  250. 'consultall'('-'(:0).:1) :
  251.    '!' .
  252.    'reconsult'(:0) .
  253.    'consultall'(:1) . []
  254. 'consultall'(:0.:1) :
  255.    '!' .
  256.    'consult'(:0) .
  257.    'consultall'(:1) . []
  258. 'consult'(:0) :
  259.    'seeing'(:1) .
  260.    'readprog'(:0) .
  261.    'see'(:1) . []
  262. 'reconsult'(:0) :
  263.    'redefine' .
  264.    'seeing'(:1) .
  265.    'readprog'(:0) .
  266.    'see'(:1) .
  267.    'redefine' . []
  268. 'readprog'('user') :
  269.    '!' .
  270.    'getprog' . []
  271. 'readprog'(:0) :
  272.    'see'(:0) .
  273.    'echo' .
  274.    'getprog' .
  275.    'noecho' .
  276.    'seen' . []
  277. 'getprog' :
  278.    'repeat' .
  279.    'read'(:0) .
  280.    'assimilate'(:0) .
  281.    '='(:0, 'end') .
  282.    '!' . []
  283. 'assimilate'('e r r') :
  284.    '!' . []
  285. 'assimilate'('-->'(:0, :1)) :
  286.    '!' .
  287.    'tag'('transl_rule'(:0, :1, :2)) .
  288.    'assertz'(:2) . []
  289. 'assimilate'(':-'(:0)) :
  290.    '!' .
  291.    'once'(:0) . []
  292. 'assimilate'('end') :
  293.    'nl' .
  294.    '!' . []
  295. 'assimilate'(:0) :
  296.    'integer'(:0) .
  297.    '!' .
  298.    'num_clause' . []
  299. 'assimilate'(:0) :
  300.    'assertz'(:0) . []
  301. 'read'(:0) :
  302.    'read'(:0, :1) . []
  303. 'read'(:0, :1) :
  304.    'gettr'(:2, :1) .
  305.    '!' .
  306.    'maketerm'(:2, :0) . []
  307. 'read'('e r r', _) :
  308.    'nl' .
  309.    'display'('+++ Bad term on input. Text skipped: ') .
  310.    'skip' .
  311.    'nl' . []
  312. 'skip' :
  313.    'lastch'(:0) .
  314.    'wch'(:0) .
  315.    'skip'(:0) . []
  316. 'skip'('.') :
  317.    'rch' .
  318.    'lastch'(:0) .
  319.    'e_skip'(:0) .
  320.    '!' . []
  321. 'skip'('%') :
  322.    'skip_comment' .
  323.    '!' .
  324.    'rch' .
  325.    'skip' . []
  326. 'skip'(:0) :
  327.    'isquote'(:0) .
  328.    'skip_s'(:0) .
  329.    '!' .
  330.    'rch' .
  331.    'skip' . []
  332. 'skip'(_) :
  333.    'rch' .
  334.    'skip' . []
  335. 'e_skip'(:0) :
  336.    '@=<'(:0, ' ') . []
  337. 'e_skip'(:0) :
  338.    'wch'(:0) .
  339.    'rch' .
  340.    'skip' . []
  341. 'skip_comment' :
  342.    'repeat' .
  343.    'rch' .
  344.    'lastch'(:0) .
  345.    'wch'(:0) .
  346.    'iseoln'(:0) .
  347.    '!' . []
  348. 'isquote'('''') : []
  349. 'isquote'('"') : []
  350. 'skip_s'(:0) :
  351.    'repeat' .
  352.    'rch' .
  353.    'lastch'(:1) .
  354.    'wch'(:1) .
  355.    '='(:1, :0) .
  356.    '!' . []
  357. 'gettr'(:0, :1) :
  358.    'gettoken'(:2, :1) .
  359.    'parse'('bottom'.[], :2, :0, :1) . []
  360. 'parse'('t'(:0).'bottom'.[], 'dot', :0, _) :
  361.    '!' . []
  362. 'parse'(:0, :1, :2, :3) :
  363.    'topterminal'(:0, :4, :5) .
  364.    'establish_precedence'(:4, :1, :5, :6, :7, :8) .
  365.    'exch_top'(:4, :7, :0, :9) .
  366.    'step'(:6, :8, :9, :10, :11, :3) .
  367.    'parse'(:10, :11, :2, :3) . []
  368. 'topterminal'('t'(_).:0._, :0, 2) :
  369.    '!' . []
  370. 'topterminal'(:0._, :0, 1) : []
  371. 'exch_top'(:0, :0, :1, :1) :
  372.    '!' . []
  373. 'exch_top'(_, :0, 't'(:1)._.:2, 't'(:1).:0.:2) :
  374.    '!' . []
  375. 'exch_top'(_, :0, _.:1, :0.:1) : []
  376. 'step'('lseq', :0, :1, :0.:1, :2, :3) :
  377.    '!' .
  378.    'gettoken'(:2, :3) . []
  379. 'step'('gt', :0, :1, :2, :0, _) :
  380.    'reduce'(:1, :2) . []
  381. 'reduce'('vns'(:0).:1, 't'('arg0'(:0)).:1) : []
  382. 'reduce'('id'(:0).:1, 't'('arg0'(:0)).:1) : []
  383. 'reduce'('br'('r', '()').'t'(:0).'br'('l', '()').'id'(:1).:2, 't'('tr'(:1, :0)).:2) : []
  384. 'reduce'('br'('r', :0).'br'('l', :0).:1, 't'('arg0'(:0)).:1) :
  385.    'not'('='(:0, '()')) . []
  386. 'reduce'('br'('r', :0).'t'(:1).'br'('l', :0).:2, 't'('tr'(:0, :1)).:2) : []
  387. 'reduce'('br'('r', '[]').'t'(:0).'bar'.'t'(:1).'br'('l', '[]').:2, 't'('bar'(:1, :0)).:2) : []
  388. 'reduce'('ff'(:0, :1, _).'t'(:2).:3, 't'('tr1'(:0, :2)).:3) :
  389.    'ismpostf'(:1) . []
  390. 'reduce'('t'(:0).'ff'(:1, :2, _).'t'(:3).:4, 't'('tr2'(:1, :3, :0)).:4) :
  391.    'isminf'(:2) . []
  392. 'reduce'('t'(:0).'ff'(:1, :2, _).:3, 't'('tr1'(:1, :0)).:3) :
  393.    'ismpref'(:2) . []
  394. 'ispref'('fy') : []
  395. 'ispref'('fx') : []
  396. 'ispostf'('yf') : []
  397. 'ispostf'('xf') : []
  398. 'ismpref'(:0.[]) :
  399.    'ispref'(:0) . []
  400. 'ismpref'(_.:0.[]) :
  401.    'ispref'(:0) . []
  402. 'isminf'(:0.[]) :
  403.    'member'(:0, 'yfy'.'xfy'.'yfx'.'xfx'.[]) . []
  404. 'isminf'(_._.[]) : []
  405. 'ismpostf'(:0.[]) :
  406.    'ispostf'(:0) . []
  407. 'ismpostf'(_.:0.[]) :
  408.    'ispostf'(:0) . []
  409. 'establish_precedence'(:0, :1, :2, :3, :4, :5) :
  410.    'p'(:0, :1, :2, :6) .
  411.    'finalize'(:6, :0, :1, :3, :4, :5) .
  412.    '!' . []
  413. 'finalize'('lseq', :0, :1, 'lseq', :0, :1) : []
  414. 'finalize'('gt', :0, :1, 'gt', :0, :1) : []
  415. 'finalize'('lseq'(:0, :1), _, _, 'lseq', :0, :1) : []
  416. 'finalize'('gt'(:0, :1), _, _, 'gt', :0, :1) : []
  417. 'p'('id'(_), 'br'('l', '()'), 1, 'lseq') : []
  418. 'p'('br'('l', :0), 'br'('r', :0), _, 'lseq') : []
  419. 'p'('br'('l', '[]'), 'bar', 2, 'lseq') : []
  420. 'p'('bar', 'br'('r', '[]'), 2, 'lseq') : []
  421. 'p'(:0, :1, 1, 'gt') :
  422.    'vns_id_br'(:0, 'r') .
  423.    'br_bar'(:1, 'r') . []
  424. 'p'(:0, 'ff'(:1, :2, :3), 1, 'gt'(:0, 'ff'(:1, :4, :3))) :
  425.    'vns_id_br'(:0, 'r') .
  426.    'restrict'(:2, 'fx'.'fy'.[], :4) . []
  427. 'p'(:0, :1, 1, 'lseq') :
  428.    'br_bar'(:0, 'l') .
  429.    'vns_id_br'(:1, 'l') . []
  430. 'p'(:0, 'ff'(:1, :2, :3), :4, 'lseq'(:0, 'ff'(:1, :5, :3))) :
  431.    'br_bar'(:0, 'l') .
  432.    'pre_inpost'(:4, :2, :5) . []
  433. 'p'('ff'(:0, :1, :2), :3, :4, 'gt'('ff'(:0, :5, :2), :3)) :
  434.    'br_bar'(:3, 'r') .
  435.    'post_inpre'(:4, :1, :5) . []
  436. 'p'('ff'(:0, :1, :2), :3, 1, 'lseq'('ff'(:0, :4, :2), :3)) :
  437.    'vns_id_br'(:3, 'l') .
  438.    'restrict'(:1, 'xf'.'yf'.[], :4) . []
  439. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :2), :5, :6) :
  440.    'res_confl'(:1, :4, :5, :7, :8, :9) .
  441.    '!' .
  442.    'do_rel'(:9, 'ff'(:0, :7, :2), 'ff'(:3, :8, :2), :6) . []
  443. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :5), :6, 'gt'('ff'(:0, :7, :2), 'ff'(:3, :8, :5))) :
  444.    'stronger'(:2, :5) .
  445.    '!' .
  446.    'restrict'(:4, 'fx'.'fy'.[], :8) .
  447.    'post_inpre'(:6, :1, :7) . []
  448. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :5), :6, 'lseq'('ff'(:0, :7, :2), 'ff'(:3, :8, :5))) :
  449.    'stronger'(:5, :2) .
  450.    '!' .
  451.    'restrict'(:1, 'xf'.'yf'.[], :7) .
  452.    'pre_inpost'(:6, :4, :8) . []
  453. 'p'(_, 'dot', _, 'gt') : []
  454. 'p'('bottom', _, _, 'lseq') : []
  455. 'vns_id_br'('vns'(_), _) : []
  456. 'vns_id_br'('id'(_), _) : []
  457. 'vns_id_br'('br'(:0, _), :0) : []
  458. 'br_bar'('br'(:0, _), :0) : []
  459. 'br_bar'('bar', _) : []
  460. 'stronger'(:0, :1) :
  461.    'less'(:0, :1) . []
  462. 'pre_inpost'(1, :0, :1) :
  463.    'restrict'(:0, 'xf'.'yf'.[], :2) .
  464.    'restrict'(:2, 'xfy'.'yfx'.'xfx'.[], :1) . []
  465. 'pre_inpost'(2, :0, :1) :
  466.    'restrict'(:0, 'fx'.'fy'.[], :1) . []
  467. 'post_inpre'(1, :0, :1) :
  468.    'restrict'(:0, 'fx'.'fy'.[], :2) .
  469.    'restrict'(:2, 'xfy'.'yfx'.'xfx'.[], :1) . []
  470. 'post_inpre'(2, :0, :1) :
  471.    'restrict'(:0, 'xf'.'yf'.[], :1) . []
  472. 'restrict'(:0.[], :1, :0.[]) :
  473.    '!' .
  474.    'not'('member'(:0, :1)) . []
  475. 'restrict'(:0.:1.[], :2, :0.[]) :
  476.    'member'(:1, :2) .
  477.    '!' . []
  478. 'restrict'(:0.:1.[], :2, :1.[]) :
  479.    'member'(:0, :2) .
  480.    '!' . []
  481. 'restrict'(:0, _, :0) : []
  482. 'res_confl'(:0.[], :1.[], :2, :0.[], :1.[], :3) :
  483.    '!' .
  484.    'ff_p'(:0, :1, :2, :3) . []
  485. 'res_confl'(:0.:1.[], :2.[], :3, :4, :2.[], :5) :
  486.    '!' .
  487.    'ff_p'(:0, :2, :3, :6) .
  488.    'ff_p'(:1, :2, :3, :7) .
  489.    'match_rels'(:6, :7, :5, :0, :1, :4) . []
  490. 'res_confl'(:0.[], :1.:2.[], :3, :0.[], :4, :5) :
  491.    '!' .
  492.    'ff_p'(:0, :1, :3, :6) .
  493.    'ff_p'(:0, :2, :3, :7) .
  494.    'match_rels'(:6, :7, :5, :1, :2, :4) . []
  495. 'res_confl'(:0.:1.[], :2.:3.[], :4, :5, :6, :7) :
  496.    'ff_p'(:0, :2, :4, :8) .
  497.    'ff_p'(:0, :3, :4, :9) .
  498.    'ff_p'(:1, :2, :4, :10) .
  499.    'ff_p'(:1, :3, :4, :11) .
  500.    'res_mixed'(:8, :9, :10, :11, :7, :0, :1, :2, :3, :5, :6) .
  501.    '!' . []
  502. 'do_rel'('lseq', :0, :1, 'lseq'(:0, :1)) : []
  503. 'do_rel'('gt', :0, :1, 'gt'(:0, :1)) : []
  504. 'match_rels'(:0, :0, :0, :1, :2, :1.:2.[]) :
  505.    '!' . []
  506. 'match_rels'('err', :0, :0, _, :1, :1.[]) :
  507.    '!' . []
  508. 'match_rels'(:0, 'err', :0, :1, _, :1.[]) :
  509.    '!' . []
  510. 'match_rels'(_, _, 'err', :0, :1, :0.:1.[]) : []
  511. 'res_mixed'(:0, :0, :0, :0, :0, :1, :2, :3, :4, :1.:2.[], :3.:4.[]) : []
  512. 'res_mixed'('err', 'err', :0, :1, :2, _, :3, :4, :5, :3.[], :6) :
  513.    'match_rels'(:0, :1, :2, :4, :5, :6) . []
  514. 'res_mixed'(:0, :1, 'err', 'err', :2, :3, _, :4, :5, :3.[], :6) :
  515.    'match_rels'(:0, :1, :2, :4, :5, :6) . []
  516. 'res_mixed'('err', :0, 'err', :1, :2, :3, :4, _, :5, :6, :5.[]) :
  517.    'match_rels'(:0, :1, :2, :3, :4, :6) . []
  518. 'res_mixed'(:0, 'err', :1, 'err', :2, :3, :4, :5, _, :6, :5.[]) :
  519.    'match_rels'(:0, :1, :2, :3, :4, :6) . []
  520. 'res_mixed'(_, _, _, _, 'err', _, _, _, _, _, _) : []
  521. 'ff_p'(:0, :1, :2, 'lseq') :
  522.    'member'(:0, 'xfy'.'fy'.[]) .
  523.    'ff_p_aux1'(:2, :1) .
  524.    '!' . []
  525. 'ff_p'(:0, :1, :2, 'gt') :
  526.    'member'(:1, 'yfx'.'yf'.[]) .
  527.    'ff_p_aux2'(:2, :0) .
  528.    '!' . []
  529. 'ff_p'(_, _, _, 'err') : []
  530. 'ff_p_aux1'(1, :0) :
  531.    'ispref'(:0) . []
  532. 'ff_p_aux1'(2, :0) :
  533.    'member'(:0, 'xfy'.'xf'.'xfx'.[]) . []
  534. 'ff_p_aux2'(1, :0) :
  535.    'ispostf'(:0) . []
  536. 'ff_p_aux2'(2, :0) :
  537.    'member'(:0, 'yfx'.'fx'.'xfx'.[]) . []
  538. 'maketerm'('arg0'(:0), :0) :
  539.    '!' . []
  540. 'maketerm'('tr'('()', :0), :1) :
  541.    '!' .
  542.    'maketerm'(:0, :1) . []
  543. 'maketerm'('bar'(:0, :1), :2) :
  544.    '!' .
  545.    'maketerm'(:1, :3) .
  546.    'makelist'(:0, :3, :2) . []
  547. 'maketerm'('tr'('[]', :0), :1) :
  548.    '!' .
  549.    'makelist'(:0, '[]', :1) . []
  550. 'maketerm'('tr'('{}', :0), '{}'(:1)) :
  551.    '!' .
  552.    'maketerm'(:0, :1) . []
  553. 'maketerm'('tr'(:0, :1), :2) :
  554.    '!' .
  555.    'makelist'(:1, '[]', :3) .
  556.    '=..'(:2, :0.:3) . []
  557. 'maketerm'('tr2'(:0, :1, :2), :3) :
  558.    '!' .
  559.    'maketerm'(:1, :4) .
  560.    'maketerm'(:2, :5) .
  561.    '=..'(:3, :0.:4.:5.[]) . []
  562. 'maketerm'('tr1'(:0, :1), :2) :
  563.    'maketerm'(:1, :3) .
  564.    '=..'(:2, :0.:3.[]) . []
  565. 'makelist'('tr2'(',', :0, :1), :2, :3.:4) :
  566.    '!' .
  567.    'maketerm'(:0, :3) .
  568.    'makelist'(:1, :2, :4) . []
  569. 'makelist'(:0, :1, :2.:1) :
  570.    'maketerm'(:0, :2) . []
  571. 'gettoken'(:0, :1) :
  572.    'skipbl' .
  573.    'lastch'(:2) .
  574.    'absorbtoken'(:2, :3) .
  575.    '!' .
  576.    'maketoken'(:3, :0, :1) .
  577.    '!' . []
  578. 'absorbtoken'(:0, 'id'(:0.:1)) :
  579.    'wordstart'(:0) .
  580.    'getword'(:1) . []
  581. 'absorbtoken'(:0, 'var'(:0.:1)) :
  582.    'varstart'(:0) .
  583.    'getword'(:1) . []
  584. 'absorbtoken'(:0, 'id'(:0.[])) :
  585.    'solochar'(:0) .
  586.    'rch' . []
  587. 'absorbtoken'(:0, 'br'(:1, :2)) :
  588.    'bracket'(:0) .
  589.    'bracket'(:0, :1, :2) .
  590.    'rch' . []
  591. 'absorbtoken'('|', 'bar') :
  592.    'rch' . []
  593. 'absorbtoken'('''', 'qid'(:0)) :
  594.    'rdch'(:1) .
  595.    'getstring'('''', :1, :0) . []
  596. 'absorbtoken'('"', 'str'(:0)) :
  597.    'rdch'(:1) .
  598.    'getstring'('"', :1, :0) . []
  599. 'absorbtoken'(:0, 'num'(:0.:1)) :
  600.    'digit'(:0) .
  601.    'getdigits'(:1) . []
  602. 'absorbtoken'('-', :0) :
  603.    'rdch'(:1) .
  604.    'num_or_sym'(:1, :0) . []
  605. 'absorbtoken'('.', :0) :
  606.    'rdch'(:1) .
  607.    'dot_or_sym'(:1, :0) . []
  608. 'absorbtoken'(:0, 'id'(:0.:1)) :
  609.    'symch'(:0) .
  610.    'getsym'(:1) . []
  611. 'absorbtoken'('%', :0) :
  612.    'skipcomment' .
  613.    'lastch'(:1) .
  614.    'absorbtoken'(:1, :0) . []
  615. 'absorbtoken'(:0, _) :
  616.    'display'('errinscan'(:0)) .
  617.    'nl' .
  618.    'fail' . []
  619. 'num_or_sym'(:0, 'num'('-'.:0.:1)) :
  620.    'digit'(:0) .
  621.    'getdigits'(:1) . []
  622. 'num_or_sym'(:0, 'id'('-'.:0.:1)) :
  623.    'symch'(:0) .
  624.    'getsym'(:1) . []
  625. 'num_or_sym'(_, 'id'('-'.[])) : []
  626. 'dot_or_sym'(:0, 'dot') :
  627.    '@=<'(:0, ' ') . []
  628. 'dot_or_sym'(:0, 'id'('.'.:0.:1)) :
  629.    'symch'(:0) .
  630.    'getsym'(:1) . []
  631. 'dot_or_sym'(_, 'id'('.'.[])) : []
  632. 'skipcomment' :
  633.    'lastch'(:0) .
  634.    'iseoln'(:0) .
  635.    'skipbl' .
  636.    '!' . []
  637. 'skipcomment' :
  638.    'rch' .
  639.    'skipcomment' . []
  640. 'getword'(:0.:1) :
  641.    'rdch'(:0) .
  642.    'alphanum'(:0) .
  643.    '!' .
  644.    'getword'(:1) . []
  645. 'getword'([]) : []
  646. 'getdigits'(:0.:1) :
  647.    'rdch'(:0) .
  648.    'digit'(:0) .
  649.    '!' .
  650.    'getdigits'(:1) . []
  651. 'getdigits'([]) : []
  652. 'getsym'(:0.:1) :
  653.    'rdch'(:0) .
  654.    'symch'(:0) .
  655.    '!' .
  656.    'getsym'(:1) . []
  657. 'getsym'([]) : []
  658. 'getstring'(:0, :0, :1) :
  659.    '!' .
  660.    'rdch'(:2) .
  661.    'twodelims'(:0, :2, :1) . []
  662. 'getstring'(:0, :1, :1.:2) :
  663.    'rdch'(:3) .
  664.    'getstring'(:0, :3, :2) . []
  665. 'twodelims'(:0, :0, :0.:1) :
  666.    '!' .
  667.    'rdch'(:2) .
  668.    'getstring'(:0, :2, :1) . []
  669. 'twodelims'(_, _, []) : []
  670. 'wordstart'(:0) :
  671.    'smalletter'(:0) . []
  672. 'varstart'(:0) :
  673.    'bigletter'(:0) . []
  674. 'varstart'('_') : []
  675. 'bracket'('(', 'l', '()') : []
  676. 'bracket'(')', 'r', '()') : []
  677. 'bracket'('[', 'l', '[]') : []
  678. 'bracket'(']', 'r', '[]') : []
  679. 'bracket'('{', 'l', '{}') : []
  680. 'bracket'('}', 'r', '{}') : []
  681. 'maketoken'('var'(:0), 'vns'(:1), :2) :
  682.    'makeptr'(:0, :1, :2) . []
  683. 'maketoken'('id'(:0), :1, _) :
  684.    'pname'(:2, :0) .
  685.    'make_ff_or_id'(:2, :1) . []
  686. 'maketoken'('qid'(:0), 'id'(:1), _) :
  687.    'pname'(:1, :0) . []
  688. 'maketoken'('num'('-'.:0), 'vns'(:1), _) :
  689.    'pnamei'(:2, :0) .
  690.    'sum'(:1, :2, 0) . []
  691. 'maketoken'('num'(:0), 'vns'(:1), _) :
  692.    'pnamei'(:1, :0) . []
  693. 'maketoken'('str'(:0), 'vns'(:0), _) : []
  694. 'maketoken'(:0, :0, _) : []
  695. 'makeptr'('_'.[], _, _) : []
  696. 'makeptr'(:0, :1, :2) :
  697.    'look_var'('var'(:0, :1), :2) . []
  698. 'look_var'(:0, :0.:1) : []
  699. 'look_var'(:0, _.:1) :
  700.    'look_var'(:0, :1) . []
  701. 'make_ff_or_id'(:0, 'ff'(:0, :1, :2)) :
  702.    'FF'(:0, :1, :2) . []
  703. 'make_ff_or_id'(:0, 'id'(:0)) : []
  704. 'transl_rule'(:0, :1, :2) :
  705.    'two_ok'(:0, :1) .
  706.    'isolate_lhs_t'(:0, :3, :4) .
  707.    'connect'(:4, :5, :6) .
  708.    'expand'(:3, :7, :5, :8) .
  709.    'makebody'(:1, :7, :6, :9, :10) .
  710.    'do_clause'(:9, :8, :2) . []
  711. 'do_clause'('true', :0, :0) :
  712.    '!' . []
  713. 'do_clause'(:0, :1, ':-'(:1, :0)) : []
  714. 'isolate_lhs_t'(','(:0, :1), :0, :1) :
  715.    ';'('nonvarint'(:0), 'rulerror'('varint')) .
  716.    ';'('isclosedlist'(:1), 'rulerror'('ter')) .
  717.    '!' . []
  718. 'isolate_lhs_t'(:0, :0, []) : []
  719. 'isclosedlist'(:0) :
  720.    'check'('iscll'(:0)) . []
  721. 'iscll'(:0) :
  722.    'var'(:0) .
  723.    '!' .
  724.    'fail' . []
  725. 'iscll'([]) : []
  726. 'iscll'(_.:0) :
  727.    'iscll'(:0) . []
  728. 'connect'([], :0, :0) : []
  729. 'connect'(:0.:1, :0.:2, :3) :
  730.    'connect'(:1, :2, :3) . []
  731. 'makebody'(';'(:0, :1), :2, :3, ';'(','(' dummy'(:2, :4), :5), :6), _) :
  732.    '!' .
  733.    'two_ok'(:0, :1) .
  734.    'makeright'(:0, :4, :3, :5) .
  735.    'makebody'(:1, :2, :3, :6, 'alt') . []
  736. 'makebody'(:0, :1, :2, :3, :4) :
  737.    'var'(:4) .
  738.    '!' .
  739.    'makeright'(:0, :1, :2, :3) . []
  740. 'makebody'(:0, :1, :2, ','(' dummy'(:1, :3), :4), 'alt') :
  741.    'makeright'(:0, :3, :2, :4) . []
  742. 'makeright'(','(:0, :1), :2, :3, :4) :
  743.    '!' .
  744.    'two_ok'(:0, :1) .
  745.    'transl_item'(:0, :2, :5, :6) .
  746.    'makeright'(:1, :5, :3, :7) .
  747.    'combine'(:6, :7, :4) . []
  748. 'makeright'(:0, :1, :2, :3) :
  749.    'transl_item'(:0, :1, :2, :3) . []
  750. 'combine'('true', :0, :0) :
  751.    '!' . []
  752. 'combine'(:0, 'true', :0) :
  753.    '!' . []
  754. 'combine'(:0, :1, ','(:0, :1)) : []
  755. 'transl_item'(:0, :1, :2, 'true') :
  756.    'isclosedlist'(:0) .
  757.    '!' .
  758.    'connect'(:0, :1, :2) . []
  759. 'transl_item'('!', :0, :0, '!') :
  760.    '!' . []
  761. 'transl_item'('{}'(:0), :1, :1, 'call'(:0)) :
  762.    '!' . []
  763. 'transl_item'(_._, _, _, _) :
  764.    'rulerror'('ter') . []
  765. 'transl_item'(';'(:0, :1), :2, :3, :4) :
  766.    '!' .
  767.    'makebody'(';'(:0, :1), :2, :3, :4, _) . []
  768. 'transl_item'(:0, :1, :2, :3) :
  769.    'expand'(:0, :1, :2, :3) . []
  770. 'expand'(:0, :1, :2, :3) :
  771.    '=..'(:0, :4.:5) .
  772.    '=..'(:3, :4.:1.:2.:5) . []
  773. 'two_ok'(:0, :1) :
  774.    'nonvarint'(:0) .
  775.    'nonvarint'(:1) .
  776.    '!' . []
  777. 'two_ok'(_, _) :
  778.    'rulerror'('varint') . []
  779. 'rulerror'(:0) :
  780.    'nl' .
  781.    'display'('+++ Error in this rule: ') .
  782.    'mes'(:0) .
  783.    'nl' .
  784.    'tagfail'('transl_rule'(_, _, _)) . []
  785. 'mes'('varint') :
  786.    'display'('variable or integer item.') . []
  787. 'mes'('ter') :
  788.    'display'('terminals not in a closed list.') . []
  789. 'phrase'(:0, :1) :
  790.    'nonvarint'(:0) .
  791.    '!' .
  792.    'expand'(:0, :1, [], :2) .
  793.    'call'(:2) . []
  794. 'phrase'(:0, :1) :
  795.    'error'('phrase'(:0, :1)) . []
  796. ' dummy'(:0, :0) : []
  797. '=..'(:0, :1) :
  798.    'var'(:0) .
  799.    'var'(:1) .
  800.    '!' .
  801.    'error'('=..'(:0, :1)) . []
  802. '=..'(:0, :0.[]) :
  803.    'integer'(:0) .
  804.    '!' . []
  805. '=..'(:0, :1.:2) :
  806.    'setarity'(:0, :2, :3) .
  807.    'functor'(:0, :1, :3) .
  808.    'not'('integer'(:1)) .
  809.    'setargs'(:0, :2, 0, :3) . []
  810. 'setarity'(:0, :1, :2) :
  811.    'var'(:0) .
  812.    '!' .
  813.    'length'(:1, :2) . []
  814. 'setarity'(_, _, _) : []
  815. 'setargs'(_, [], :0, :0) :
  816.    '!' . []
  817. 'setargs'(:0, :1.:2, :3, :4) :
  818.    'sum'(:3, 1, :5) .
  819.    'arg'(:5, :0, :1) .
  820.    'setargs'(:0, :2, :5, :4) . []
  821. 'length'(:0, :1) :
  822.    'length'(:0, 0, :1) . []
  823. 'length'(:0, _, _) :
  824.    'var'(:0) .
  825.    '!' .
  826.    'error'('length'(:0, _)) . []
  827. 'length'([], :0, :0) :
  828.    '!' . []
  829. 'length'(_.:0, :1, :2) :
  830.    '!' .
  831.    'sum'(:1, 1, :3) .
  832.    'length'(:0, :3, :2) . []
  833. 'length'(:0, _, _) :
  834.    'error'('length'(:0, _)) . []
  835. 'numbervars'('V'(:0), :0, :1) :
  836.    '!' .
  837.    'sum'(:0, 1, :1) . []
  838. 'numbervars'('V'(_), :0, :0) :
  839.    '!' . []
  840. 'numbervars'(:0, :1, :1) :
  841.    'integer'(:0) .
  842.    '!' . []
  843. 'numbervars'(:0, :1, :2) :
  844.    'numbervars'(:0, 1, :1, :2) . []
  845. 'numbervars'(:0, :1, :2, :3) :
  846.    'arg'(:1, :0, :4) .
  847.    '!' .
  848.    'numbervars'(:4, :2, :5) .
  849.    'sum'(:1, 1, :6) .
  850.    'numbervars'(:0, :6, :5, :3) . []
  851. 'numbervars'(_, _, :0, :0) : []
  852. : 'op'(1000, 'xfy', ',') . [] #
  853. : 'op'(1200, 'xfx', ':-') . [] #
  854. : 'op'(1200, 'fx', ':-') . [] #
  855. : 'op'(1100, 'xfy', ';') . [] #
  856. : 'op'(900, 'fy', 'not') . [] #
  857. : 'op'(700, 'xfx', '=') . [] #
  858. : 'op'(700, 'xfx', 'is') . [] #
  859. : 'op'(1200, 'xfx', '-->') . [] #
  860. : 'op'(500, 'yfx', '+') . [] #
  861. : 'op'(500, 'fx', '+') . [] #
  862. : 'op'(500, 'yfx', '-') . [] #
  863. : 'op'(500, 'fx', '-') . [] #
  864. : 'op'(400, 'yfx', '*') . [] #
  865. : 'op'(400, 'yfx', '/') . [] #
  866. : 'op'(300, 'xfx', 'mod') . [] #
  867. : 'op'(700, 'xfx', '<') . [] #
  868. : 'op'(700, 'xfx', '=<') . [] #
  869. : 'op'(700, 'xfx', '>') . [] #
  870. : 'op'(700, 'xfx', '>=') . [] #
  871. : 'op'(700, 'xfx', '=:=') . [] #
  872. : 'op'(700, 'xfx', '=\=') . [] #
  873. : 'op'(700, 'xfx', '@<') . [] #
  874. : 'op'(700, 'xfx', '@=<') . [] #
  875. : 'op'(700, 'xfx', '@>') . [] #
  876. : 'op'(700, 'xfx', '@>=') . [] #
  877. : 'op'(700, 'xfx', '=..') . [] #
  878. : 'op'(700, 'xfx', '==') . [] #
  879. : 'op'(700, 'xfx', '\==') . [] #
  880. 'binary'('yfy', 'a'(_)) : []
  881. 'binary'('xfy', 'a'('r')) : []
  882. 'binary'('yfx', 'a'('l')) : []
  883. 'binary'('xfx', 'na'(_)) : []
  884. 'unary'('fy', 'pre', 'a'('r')) : []
  885. 'unary'('fx', 'pre', 'na'('r')) : []
  886. 'unary'('yf', 'post', 'a'('l')) : []
  887. 'unary'('xf', 'post', 'na'('l')) : []
  888. 'is'(:0, :0) :
  889.    'integer'(:0) .
  890.    '!' . []
  891. 'is'(:0, '+'(:1, :2)) :
  892.    '!' .
  893.    'is'(:3, :1) .
  894.    'is'(:4, :2) .
  895.    'sum'(:3, :4, :0) . []
  896. 'is'(:0, '-'(:1, :2)) :
  897.    '!' .
  898.    'is'(:3, :1) .
  899.    'is'(:4, :2) .
  900.    'sum'(:4, :0, :3) . []
  901. 'is'(:0, '*'(:1, :2)) :
  902.    '!' .
  903.    'is'(:3, :1) .
  904.    'is'(:4, :2) .
  905.    'prod'(:3, :4, 0, :0) . []
  906. 'is'(:0, '/'(:1, :2)) :
  907.    '!' .
  908.    'is'(:3, :1) .
  909.    'is'(:4, :2) .
  910.    'prod'(:4, :0, _, :3) . []
  911. 'is'(:0, 'mod'(:1, :2)) :
  912.    '!' .
  913.    'is'(:3, :1) .
  914.    'is'(:4, :2) .
  915.    'prod'(:4, _, :0, :3) . []
  916. 'is'(:0, '+'(:1)) :
  917.    '!' .
  918.    'is'(:0, :1) . []
  919. 'is'(:0, '-'(:1)) :
  920.    '!' .
  921.    'is'(:2, :1) .
  922.    'sum'(:0, :2, 0) . []
  923. 'is'(:0, :0.[]) :
  924.    'integer'(:0) . []
  925. '=:='(:0, :1) :
  926.    'is'(:2, :0) .
  927.    'is'(:2, :1) . []
  928. '<'(:0, :1) :
  929.    'is'(:2, :0) .
  930.    'is'(:3, :1) .
  931.    'less'(:2, :3) . []
  932. '=<'(:0, :1) :
  933.    'is'(:2, :0) .
  934.    'is'(:3, :1) .
  935.    'not'('less'(:3, :2)) . []
  936. '>'(:0, :1) :
  937.    'is'(:2, :0) .
  938.    'is'(:3, :1) .
  939.    'less'(:3, :2) . []
  940. '>='(:0, :1) :
  941.    'is'(:2, :0) .
  942.    'is'(:3, :1) .
  943.    'not'('less'(:2, :3)) . []
  944. '=\='(:0, :1) :
  945.    'not'('=:='(:0, :1)) . []
  946. '=='(:0, :1) :
  947.    'var'(:0) .
  948.    'var'(:1) .
  949.    '!' .
  950.    'eqvar'(:0, :1) . []
  951. '=='(:0, :1) :
  952.    'check'('==?'(:0, :1)) . []
  953. '\=='(:0, :1) :
  954.    'not'('==?'(:0, :1)) . []
  955. '==?'(:0, :1) :
  956.    'integer'(:0) .
  957.    'integer'(:1) .
  958.    '!' .
  959.    '='(:0, :1) . []
  960. '==?'(:0, :1) :
  961.    'nonvarint'(:0) .
  962.    'nonvarint'(:1) .
  963.    'functor'(:0, :2, :3) .
  964.    'functor'(:1, :2, :3) .
  965.    'equalargs'(:0, :1, 1) . []
  966. 'equalargs'(:0, :1, :2) :
  967.    'arg'(:2, :0, :3) .
  968.    'arg'(:2, :1, :4) .
  969.    '!' .
  970.    '=='(:3, :4) .
  971.    'sum'(:2, 1, :5) .
  972.    'equalargs'(:0, :1, :5) . []
  973. 'equalargs'(_, _, _) : []
  974. 'assert'(:0) :
  975.    'asserta'(:0) . []
  976. 'asserta'(:0) :
  977.    'nonvarint'(:0) .
  978.    'convert'(:0, :1, :2) .
  979.    '!' .
  980.    'assert'(:1, :2, 0) . []
  981. 'asserta'(:0) :
  982.    'error'('asserta'(:0)) . []
  983. 'assertz'(:0) :
  984.    'nonvarint'(:0) .
  985.    'convert'(:0, :1, :2) .
  986.    '!' .
  987.    'assert'(:1, :2, 32767) . []
  988. 'assertz'(:0) :
  989.    'error'('assertz'(:0)) . []
  990. 'convert'(':-'(:0, :1), :0, :2) :
  991.    'conv_body'(:1, :2) . []
  992. 'convert'(:0, :0, []) : []
  993. 'conv_body'(:0, 'call'(:0).[]) :
  994.    'var'(:0) .
  995.    '!' . []
  996. 'conv_body'('true', []) : []
  997. 'conv_body'(:0, :1) :
  998.    'conv_b'(:0, :1) . []
  999. 'conv_b'(:0, :1.[]) :
  1000.    'var'(:0) .
  1001.    '!' .
  1002.    'conv_call'(:0, :1) . []
  1003. 'conv_b'(','(:0, :1), :2.:3) :
  1004.    '!' .
  1005.    'conv_call'(:0, :2) .
  1006.    'conv_b'(:1, :3) . []
  1007. 'conv_b'(:0, :0.[]) : []
  1008. 'conv_call'(:0, 'call'(:0)) :
  1009.    'var'(:0) .
  1010.    '!' . []
  1011. 'conv_call'(:0, :0) : []
  1012. 'retract'(:0) :
  1013.    'nonvarint'(:0) .
  1014.    'convert'(:0, :1, :2) .
  1015.    '!' .
  1016.    'functor'(:1, :3, :4) .
  1017.    'remcls'(:3, :4, 1, :1, :2) . []
  1018. 'retract'(:0) :
  1019.    'error'('retract'(:0)) . []
  1020. 'remcls'(:0, :1, :2, :3, :4) :
  1021.    'clause'(:0, :1, :2, :5, :6) .
  1022.    'remcls'(:0, :1, :2, :5, :3, :6, :4) . []
  1023. 'remcls'(:0, :1, :2, :3, :3, :4, :4) :
  1024.    'retract'(:0, :1, :2) . []
  1025. 'remcls'(:0, :1, :2, :3, :4, :5, :6) :
  1026.    'check'('='(:3, :4)) .
  1027.    'check'('='(:5, :6)) .
  1028.    '!' .
  1029.    'remcls'(:0, :1, :2, :4, :6) . []
  1030. 'remcls'(:0, :1, :2, _, :3, _, :4) :
  1031.    'sum'(:2, 1, :5) .
  1032.    'remcls'(:0, :1, :5, :3, :4) . []
  1033. 'clause'(:0, :1) :
  1034.    'nonvarint'(:0) .
  1035.    '!' .
  1036.    'functor'(:0, :2, :3) .
  1037.    'gencls'(:2, :3, 1, :0, :1) . []
  1038. 'clause'(:0, :1) :
  1039.    'error'('clause'(:0, :1)) . []
  1040. 'gencls'(:0, :1, :2, :3, :4) :
  1041.    'clause'(:0, :1, :2, :5, :6) .
  1042.    'gencls'(:0, :1, :2, :5, :3, :6, :4) . []
  1043. 'gencls'(_, _, _, :0, :0, :1, :2) :
  1044.    'conv_body'(:2, :1) . []
  1045. 'gencls'(:0, :1, :2, _, :3, _, :4) :
  1046.    'sum'(:2, 1, :5) .
  1047.    'gencls'(:0, :1, :5, :3, :4) . []
  1048. 'listing' :
  1049.    'proc'(:0) .
  1050.    'listproc'(:0) .
  1051.    'nl' .
  1052.    'fail' . []
  1053. 'listing' : []
  1054. 'listing'(:0) :
  1055.    'atom'(:0) .
  1056.    '!' .
  1057.    'listbyname'(:0) . []
  1058. 'listing'('/'(:0, :1)) :
  1059.    'atom'(:0) .
  1060.    'integer'(:1) .
  1061.    '=<'(0, :1) .
  1062.    '!' .
  1063.    'functor'(:2, :0, :1) .
  1064.    'listproc'(:2) . []
  1065. 'listing'(:0) :
  1066.    'isclosedlist'(:0) .
  1067.    'listseveral'(:0) .
  1068.    '!' . []
  1069. 'listing'(:0) :
  1070.    'error'('listing'(:0)) . []
  1071. 'listseveral'([]) : []
  1072. 'listseveral'(:0.:1) :
  1073.    'listing'(:0) .
  1074.    'listseveral'(:1) . []
  1075. 'listbyname'(:0) :
  1076.    'proc'(:1) .
  1077.    'functor'(:1, :0, _) .
  1078.    'listproc'(:1) .
  1079.    'nl' .
  1080.    'fail' . []
  1081. 'listbyname'(_) : []
  1082. 'listproc'(:0) :
  1083.    'clause'(:0, :1) .
  1084.    'writeclause'(:0, :1) .
  1085.    'wch'('.') .
  1086.    'nl' .
  1087.    'fail' . []
  1088. 'listproc'(_) : []
  1089. 'writeclause'(:0, :1) :
  1090.    'not'('var'(:1)) .
  1091.    '='(:1, 'true') .
  1092.    '!' .
  1093.    'writeq'(:0) . []
  1094. 'writeclause'(:0, :1) :
  1095.    'writeq'(':-'(:0, :1)) . []
  1096. 'write'(:0) :
  1097.    'side_effects'('outterm'(:0, 'noq')) . []
  1098. 'writeq'(:0) :
  1099.    'side_effects'('outterm'(:0, 'q')) . []
  1100. 'writetext'(:0.:1) :
  1101.    '!' .
  1102.    'wch'(:0) .
  1103.    'writetext'(:1) . []
  1104. 'writetext'([]) : []
  1105. 'outterm'(:0, :1) :
  1106.    'numbervars'(:0, 1, _) .
  1107.    'outt'(:0, 'fd'(_, _), :1) . []
  1108. 'outt'(:0, _, _) :
  1109.    'var'(:0) .
  1110.    '!' .
  1111.    'wch'('_') . []
  1112. 'outt'('V'(:0), _, _) :
  1113.    'integer'(:0) .
  1114.    '!' .
  1115.    'wch'('X') .
  1116.    'display'(:0) . []
  1117. 'outt'(:0, _, _) :
  1118.    'integer'(:0) .
  1119.    'display'(:0) .
  1120.    '!' . []
  1121. 'outt'(:0, :1, :2) :
  1122.    '=..'(:0, :3.:4) .
  1123.    'outfun'(:3, :4, :1, :2) . []
  1124. 'outfun'(:0, :1, :2, :3) :
  1125.    'isfix'(:0, :1, :4, :5) .
  1126.    '!' .
  1127.    'outff'(:5, :4, :0.:1, :2, :3) . []
  1128. 'outfun'('.', :0.:1.[], _, :2) :
  1129.    '!' .
  1130.    'outlist'(:0.:1, :2) . []
  1131. 'outfun'(:0, :1, _, :2) :
  1132.    'outname'(:0, :2) .
  1133.    'outargs'(:1, :2) . []
  1134. 'isfix'(:0, _._.[], 'ff'(:1, :2), 'in') :
  1135.    'FF'(:0, :3, :1) .
  1136.    'mk_bin'(:3, :2) . []
  1137. 'isfix'(:0, _.[], 'ff'(:1, :2), :3) :
  1138.    'FF'(:0, :4, :1) .
  1139.    'mk_un'(:4, :3, :2) . []
  1140. 'mk_bin'(:0._, :1) :
  1141.    'binary'(:0, :1) . []
  1142. 'mk_un'(:0.[], :1, :2) :
  1143.    'unary'(:0, :1, :2) . []
  1144. 'mk_un'(_.:0.[], :1, :2) :
  1145.    'unary'(:0, :1, :2) . []
  1146. 'outff'(:0, :1, :2, :3, :4) :
  1147.    'agree'(:1, :3) .
  1148.    '!' .
  1149.    'outff'(:0, :1, :2, :4) . []
  1150. 'outff'(:0, :1, :2, _, :3) :
  1151.    'wch'('(') .
  1152.    'outff'(:0, :1, :2, :3) .
  1153.    'wch'(')') . []
  1154. 'agree'(_, 'fd'(:0, _)) :
  1155.    'var'(:0) . []
  1156. 'agree'('ff'(:0, _), 'fd'('ff'(:1, _), _)) :
  1157.    'stronger'(:0, :1) . []
  1158. 'agree'('ff'(:0, 'a'(:1)), 'fd'('ff'(:0, 'a'(:1)), :1)) : []
  1159. 'outff'('in', :0, :1.:2.:3.[], :4) :
  1160.    'outt'(:2, 'fd'(:0, 'l'), :4) .
  1161.    'outfn'(:1, ' ') .
  1162.    'outt'(:3, 'fd'(:0, 'r'), :4) . []
  1163. 'outff'('pre', :0, :1.:2.[], :3) :
  1164.    'outfn'(:1, ' ') .
  1165.    'outt'(:2, 'fd'(:0, 'r'), :3) . []
  1166. 'outff'('post', :0, :1.:2.[], :3) :
  1167.    'outt'(:2, 'fd'(:0, 'l'), :3) .
  1168.    'outfn'(:1, ' ') . []
  1169. 'outfn'(:0, ' ') :
  1170.    '!' .
  1171.    'wch'(' ') .
  1172.    'display'(:0) .
  1173.    'wch'(' ') . []
  1174. 'outfn'(:0, :1) :
  1175.    'wch'(:1) .
  1176.    'pname'(:0, :2) .
  1177.    'outfn1'(:2, :1) .
  1178.    'wch'(:1) . []
  1179. 'outfn1'([], _) :
  1180.    '!' . []
  1181. 'outfn1'(:0.:1, :0) :
  1182.    '!' .
  1183.    'wch'(:0) .
  1184.    'wch'(:0) .
  1185.    'outfn1'(:1, :0) . []
  1186. 'outfn1'(:0.:1, :2) :
  1187.    'wch'(:0) .
  1188.    'outfn1'(:1, :2) . []
  1189. 'outname'(:0, 'noq') :
  1190.    '!' .
  1191.    'display'(:0) . []
  1192. 'outname'(:0, 'q') :
  1193.    'FF'(:0, _, _) .
  1194.    '!' .
  1195.    'outfn'(:0, '''') . []
  1196. 'outname'(:0, 'q') :
  1197.    'pname'(:0, :1) .
  1198.    'check'('noq'(:1)) .
  1199.    '!' .
  1200.    'display'(:0) . []
  1201. 'outname'(:0, 'q') :
  1202.    'outfn'(:0, '''') . []
  1203. 'noq'(:0.:1) :
  1204.    'wordstart'(:0) .
  1205.    'isword'(:1) . []
  1206. 'noq'(:0.[]) :
  1207.    'solochar'(:0) . []
  1208. 'noq'('['.']'.[]) : []
  1209. 'noq'(:0.:1) :
  1210.    'symch'(:0) .
  1211.    'issym'(:1) . []
  1212. 'isword'([]) : []
  1213. 'isword'(:0.:1) :
  1214.    'alphanum'(:0) .
  1215.    'isword'(:1) . []
  1216. 'issym'([]) : []
  1217. 'issym'(:0.:1) :
  1218.    'symch'(:0) .
  1219.    'issym'(:1) . []
  1220. 'outargs'([], _) :
  1221.    '!' . []
  1222. 'outargs'(:0, :1) :
  1223.    'fake'(:2) .
  1224.    'wch'('(') .
  1225.    'outargs'(:0, :2, :1) .
  1226.    'wch'(')') . []
  1227. 'outargs'(:0.[], :1, :2) :
  1228.    '!' .
  1229.    'outt'(:0, :1, :2) . []
  1230. 'outargs'(:0.:1, :2, :3) :
  1231.    'outt'(:0, :2, :3) .
  1232.    'display'(', ') .
  1233.    'outargs'(:1, :2, :3) . []
  1234. 'fake'('fd'('ff'(1000, 'na'(_)), _)) : []
  1235. 'outlist'(:0.:1, :2) :
  1236.    'fake'(:3) .
  1237.    'wch'('[') .
  1238.    'outt'(:0, :3, :2) .
  1239.    'outlist'(:1, :3, :2) .
  1240.    'wch'(']') . []
  1241. 'outlist'([], _, _) :
  1242.    '!' . []
  1243. 'outlist'(:0.:1, :2, :3) :
  1244.    '!' .
  1245.    'display'(', ') .
  1246.    'outt'(:0, :2, :3) .
  1247.    'outlist'(:1, :2, :3) . []
  1248. 'outlist'(:0, :1, :2) :
  1249.    'display'(' | ') .
  1250.    'outt'(:0, :1, :2) . []
  1251. 'translate'(:0, :1) :
  1252.    'see'(:0) .
  1253.    'tell'(:1) .
  1254.    'nl' .
  1255.    'repeat' .
  1256.    'read'(:2, :3) .
  1257.    'put'(:2, :3) .
  1258.    'nl' .
  1259.    '='(:2, 'end') .
  1260.    '!' .
  1261.    'seen' .
  1262.    'told' .
  1263.    'see'('user') .
  1264.    'tell'('user') . []
  1265. 'put'(':-'(:0, :1), :2) :
  1266.    '!' .
  1267.    'puthead'(:0, :3) .
  1268.    'putbody'(:1, :3) .
  1269.    'put_varnames'(:2, :3, 0) . []
  1270. 'put'('-->'(:0, :1), :2) :
  1271.    '!' .
  1272.    'tag'('transl_rule'(:0, :1, ':-'(:3, :4))) .
  1273.    'puthead'(:3, :5) .
  1274.    'putbody'(:4, :5) .
  1275.    'put_varnames'(:2, :5, 0) . []
  1276. 'put'(':-'(:0), :1) :
  1277.    '!' .
  1278.    'putbody'(:0, :2) .
  1279.    'wch'('#') .
  1280.    'nl' .
  1281.    'put_varnames'(:1, :2, 0) .
  1282.    'once'(:0) . []
  1283. 'put'('end', _) :
  1284.    '!' .
  1285.    'putbody'('seen', _) .
  1286.    'wch'('#') .
  1287.    'nl' . []
  1288. 'put'('e r r', _) :
  1289.    '!' . []
  1290. 'put'(:0, :1) :
  1291.    'puthead'(:0, :2) .
  1292.    'putbody'('true', _) .
  1293.    'put_varnames'(:1, :2, 0) . []
  1294. 'puthead'(:0, :1) :
  1295.    'nonvarint'(:0) .
  1296.    '!' .
  1297.    'putterm'(:0, :1) . []
  1298. 'puthead'(:0, _) :
  1299.    'transl_err'(:0) . []
  1300. 'putbody'(:0, :1) :
  1301.    'punct'(':') .
  1302.    'conv_body'(:0, :2) .
  1303.    '!' .
  1304.    'putbody_c'(:2, :1) . []
  1305. 'putbody_c'([], _) :
  1306.    '!' .
  1307.    'display'([]) . []
  1308. 'putbody_c'(:0.:1, :2) :
  1309.    'not'('integer'(:0)) .
  1310.    '!' .
  1311.    'putterm'(:0, :2) .
  1312.    'punct'('.') .
  1313.    'putbody_c'(:1, :2) . []
  1314. 'putbody_c'(:0._, _) :
  1315.    'transl_err'(:0) . []
  1316. 'punct'(:0) :
  1317.    'wch'(' ') .
  1318.    'wch'(:0) .
  1319.    'nl' .
  1320.    'display'('   ') . []
  1321. 'putterm'(:0, :1) :
  1322.    'var'(:0) .
  1323.    '!' .
  1324.    'lookup'(:0, :1, -1, :2) .
  1325.    'wch'(':') .
  1326.    'display'(:2) . []
  1327. 'putterm'(:0, _) :
  1328.    'integer'(:0) .
  1329.    '!' .
  1330.    'display'(:0) . []
  1331. 'putterm'(:0.:1, :2) :
  1332.    '!' .
  1333.    'putterm_inlist'(:0, :2) .
  1334.    'display'(' . ') .
  1335.    'putterm'(:1, :2) . []
  1336. 'putterm'(:0, :1) :
  1337.    '=..'(:0, :2.:3) .
  1338.    'outfn'(:2, '''') .
  1339.    'putargs'(:3, :1) . []
  1340. 'lookup'(:0, :1, :2, :3) :
  1341.    'var'(:1) .
  1342.    '!' .
  1343.    'sum'(:2, 1, :3) .
  1344.    '='(:1, 'vn'(:0, :3).:4) . []
  1345. 'lookup'(:0, 'vn'(:1, :2)._, _, :2) :
  1346.    'eqvar'(:0, :1) .
  1347.    '!' . []
  1348. 'lookup'(:0, 'vn'(_, :1).:2, _, :3) :
  1349.    'lookup'(:0, :2, :1, :3) . []
  1350. 'putargs'([], _) :
  1351.    '!' . []
  1352. 'putargs'(:0, :1) :
  1353.    'wch'('(') .
  1354.    'putarglist'(:0, :1) .
  1355.    'wch'(')') . []
  1356. 'putarglist'(:0.[], :1) :
  1357.    '!' .
  1358.    'putterm'(:0, :1) . []
  1359. 'putarglist'(:0.:1, :2) :
  1360.    'putterm'(:0, :2) .
  1361.    'display'(', ') .
  1362.    'putarglist'(:1, :2) . []
  1363. 'putterm_inlist'(:0, :1) :
  1364.    'nonvarint'(:0) .
  1365.    '='(:0, _._) .
  1366.    '!' .
  1367.    'wch'('(') .
  1368.    'putterm'(:0, :1) .
  1369.    'wch'(')') . []
  1370. 'putterm_inlist'(:0, :1) :
  1371.    'putterm'(:0, :1) . []
  1372. 'transl_err'(:0) :
  1373.    'nl' .
  1374.    'display'('+++ Bad head or call: ') .
  1375.    'display'(:0) .
  1376.    'nl' .
  1377.    'fail' . []
  1378. 'put_varnames'(:0, :1, :2) :
  1379.    'var'(:1) .
  1380.    '!' .
  1381.    []
  1382. 'put_varnames'(:0, 'vn'(:1, :2) . :3, :4) :
  1383.    'find_varname'(:1, :0, :2, :5) .
  1384.    'nextline'(:4) .
  1385.    'wch'(' ') .
  1386.    'display'(:2) .
  1387.    'wch'(' ') .
  1388.    'writetext'(:5) .
  1389.    'wch'(',') .
  1390.    'sum'(:4, 1, :6) .
  1391.    'put_varnames'(:0, :3, :6) .
  1392.    []
  1393. 'find_varname'(:0, :1, :2, 'X' . :3) :
  1394.    'var'(:1) .
  1395.    '!' .
  1396.    'pnamei'(:2, :3) .
  1397.    []
  1398. 'find_varname'(:0, 'var'(:1, :2) . :3, :4, :1) :
  1399.    'eqvar'(:0, :2) .
  1400.    '!' .
  1401.    []
  1402. 'find_varname'(:0, :1 . :2, :3, :4) :
  1403.    'find_varname'(:0, :2, :3, :4) .
  1404.    []
  1405. 'nextline'(:0) :
  1406.    'prod'(6, _, 0, :0) .
  1407.    '!' .
  1408.    'nl' .
  1409.    'display'('   %%') . []
  1410. 'nextline'(_) : []
  1411. 'protect' :
  1412.    'proc'(:0) .
  1413.    'functor'(:0, :1, :2) .
  1414.    'protect'(:1, :2) .
  1415.    'fail' . []
  1416. 'protect' :
  1417.    'display'('All predicates protected.') .
  1418.    'nl' . []
  1419. 'unprotect' :
  1420.    'proc'(:0) .
  1421.    'functor'(:0, :1, :2) .
  1422.    'unprotect'(:1, :2) .
  1423.    'fail' . []
  1424. 'unprotect' :
  1425.    'display'('All predicates un-protected.') .
  1426.    'nl' . []
  1427. :  'grf_mse_hide' .
  1428.    'txt_mode' .
  1429.    'protect' .
  1430.    'seen' . [] #
  1431.  
  1432.